package py.una.pol.ii.is2.dao.flota;

import java.util.List;
import javax.ejb.Local;
import py.una.pol.ii.is2.domain.flota.PlantillaMantenimiento;
import py.una.pol.ii.is2.domain.flota.Tipo;
import py.una.pol.ii.is2.domain.flota.Vehiculo;

/**
 *  Define la interfaz PlantillaMantenimientoDAO.
 *  Las operaciones que soporta la interfaz son:
 *      a) insert --> inserción de un objeto de tipo PlantillaMantenimiento
 *      b) update --> actualización de un objeto de tipo PlantillaMantenimiento
 *      c) delete --> eliminación de un objeto de tipo PlantillaMantenimiento
 *      d) find --> búsqueda de un objeto de tipo PlantillaMantenimiento
 *      e) refreshPlantilla --> sincroniza la entidad de PlantillaMantenimiento con el correspondiente registro de la base de datos, asi como todos sus detalles
 *      f) getListaPlantillaMantenimientos --> listado de entidades de tipo PlantillaMantenimiento
 *      g) getListaPlantillaMantenimientosByTipoVhiculo -->
 *      h) getListaPlantillaMantenimientosDiscriminadasByVehiculo -->
 *  @author mbenitez
 *  @date 30/04/2009
 */
@Local
public interface PlantillaMantenimientoDAO {
    /**
     * Permite la inserción de un objeto de tipo PlantillaMantenimiento
     * @param objeto Elemento a insertar
     * @return true si la operación tuvo éxito, en otro caso false
     * @throws java.lang.Exception
     */
    public boolean insert(PlantillaMantenimiento objeto) throws Exception;
    /**
     * Permite la actualización de un objeto de tipo PlantillaMantenimiento
     * @param objeto Elemento a editar
     * @return true si la operación tuvo éxito, en otro caso false
     * @throws java.lang.Exception
     */
    public boolean update(PlantillaMantenimiento objeto) throws Exception;
    /**
     * Permite la eliminación de un objeto de tipo PlantillaMantenimiento
     * @param objeto Elemento a eliminar
     * @return true si la operación tuvo éxito, en otro caso false
     * @throws java.lang.Exception
     */
    public boolean delete(PlantillaMantenimiento objeto) throws Exception;
     /**
     * Permite la actualización de un objeto de tipo PlantillaMantenimiento
     * @param objeto Elemento a editar
     * @return true si la operación tuvo éxito, en otro caso false
     * @throws java.lang.Exception
     */
    public boolean refreshPlantilla(PlantillaMantenimiento objeto) throws Exception;
    /**
     * Busca un registro de la tabla PlantillaMantenimiento por el código de la misma
     * @param codObjeto Código de PlantillaMantenimiento a buscar
     * @return PlantillaMantenimiento encontrada, en otro caso null
     * @throws java.lang.Exception
     */
    public PlantillaMantenimiento find(Integer codObjeto) throws Exception;
     /**
     * Permite recuperar una lista de entidades ordenadas por la clave primaria.
     * La lista obedece a una restricción que recibe como parámetro pudiendo éste ser null.
     *
     * @param condicion Restricción de búsqueda
     * @return Lista de entidades, en otro caso null.
     * @throws java.lang.Exception
     */
    public List<PlantillaMantenimiento> getListaPlantillaMantenimientos(String condicion) throws Exception;
    /**
     * Permite recuperar una lista de entidades ordenadas por tipo de vehiculo.
     * @param tipoVehiculo
     * @return Lista de entidades, en otro caso null.
     * @throws java.lang.Exception
     */
    public List<PlantillaMantenimiento> getListaPlantillaMantenimientosByTipoVhiculo(Tipo tipoVehiculo) throws Exception;
    /**
     * Permite recuperar una lista de entidades ordenadas por vehiculo.
     * @param vehiculo
     * @return Lista de entidades, en otro caso null.
     * @throws java.lang.Exception
     */
    public List<PlantillaMantenimiento> getListaPlantillaMantenimientosDiscriminadasByVehiculo(Vehiculo vehiculo) throws Exception;

}
